// 用户上下文工具函数
// 修改为从localStorage获取用户信息

/**
 * 获取当前登录用户ID
 * @returns 用户ID或null
 */
export const getCurrentUserId = async (): Promise<string | null> => {
  try {
    const userStr = localStorage.getItem('user');
    if (!userStr) return null;
    
    const user = JSON.parse(userStr);
    return user?.id || null;
  } catch (error) {
    console.error('获取当前用户ID失败:', error);
    return null;
  }
};

/**
 * 获取当前登录用户信息
 * @returns 用户信息或null
 */
export const getCurrentUser = async () => {
  try {
    const userStr = localStorage.getItem('user');
    if (!userStr) return null;
    
    const user = JSON.parse(userStr);
    return {
      id: user.id,
      email: user.email || '',
      name: user.name || '用户',
      role: user.role || 'user'
    };
  } catch (error) {
    console.error('获取当前用户信息失败:', error);
    return null;
  }
};

/**
 * 检查用户是否已登录
 * @returns boolean
 */
export const isUserAuthenticated = async (): Promise<boolean> => {
  try {
    const userStr = localStorage.getItem('user');
    return !!userStr;
  } catch (error) {
    return false;
  }
};

/**
 * 为数据项添加用户ID
 * @param data 数据项
 * @returns 包含用户ID的数据项
 */
export const addUserIdToData = async <T extends Record<string, any>>(data: T): Promise<T & { user_id: string }> => {
  const userId = await getCurrentUserId();
  if (!userId) {
    throw new Error('用户未登录，无法保存数据');
  }
  
  return {
    ...data,
    user_id: userId
  };
};

/**
 * 为数据数组添加用户ID
 * @param dataArray 数据数组
 * @returns 包含用户ID的数据数组
 */
export const addUserIdToDataArray = async <T extends Record<string, any>>(dataArray: T[]): Promise<(T & { user_id: string })[]> => {
  const userId = await getCurrentUserId();
  if (!userId) {
    throw new Error('用户未登录，无法保存数据');
  }
  
  return dataArray.map(data => ({
    ...data,
    user_id: userId
  }));
};